#include <stdio.h>
#include "genpat.h"

main() {
 
  DEF_GENPAT("test_dependency_selection");

  DECLAR("curr_op_i"    ,":2","B", IN   ,	"3 downto 0"  , "");
  DECLAR("next_op_i"    ,":2","B", IN   ,	"3 downto 0"  , "");
  DECLAR("eq45_45_i"   ,":2","B", IN  ,		  ""	  , "");
  DECLAR("eq45_67_i"   ,":2","B", IN  ,		  ""	  , "");
  DECLAR("eq45_89_i"   ,":2","B", IN  ,		  ""	  , "");
  DECLAR("eq67_45_i"   ,":2","B", IN  ,		  ""	  , "");
  DECLAR("eq67_67_i"   ,":2","B", IN  ,		  ""	  , "");
  DECLAR("eq67_89_i"   ,":2","B", IN  ,		  ""	  , "");
  DECLAR("eq89_45_i"   ,":2","B", IN  ,		  ""	  , "");
  DECLAR("eq89_67_i"   ,":2","B", IN  ,		  ""	  , "");
  DECLAR("eq89_89_i"   ,":2","B", IN  ,		  ""	  , "");
 
  DECLAR("hazard_o"   ,":2","B", OUT  ,		  ""	  , "");
  
  DECLAR("vdd"        ,":2","B", IN   ,	      ""      , "");
  DECLAR("vss"        ,":2","B", IN   ,	      ""      , "");

  LABEL("ds");
  
  SETTUNIT("ns");
  AFFECT("0" , "vdd"	, "1"); 
  AFFECT("0" , "vss"	, "0");
  
  //Actual:es Vectorial Proximo: Vectorial y no hay dependencia 
  AFFECT("0"    , "curr_op_i"     , "0b0000");
  AFFECT("0"    , "next_op_i"     , "0b0001");
  AFFECT("0"	, "eq45_45_i"				 , "0b0");
  AFFECT("0"	, "eq45_67_i"				 , "0b0");
  AFFECT("0"	, "eq45_89_i"				 , "0b0");
  AFFECT("0"	, "eq67_45_i"				 , "0b0");
  AFFECT("0"	, "eq67_67_i"				 , "0b0");
  AFFECT("0"	, "eq67_89_i"				 , "0b0");
  AFFECT("0"	, "eq89_45_i"				 , "0b0");
  AFFECT("0"	, "eq89_67_i"				 , "0b0");
  AFFECT("0"	, "eq89_89_i"				 , "0b0");  

  //Actual:es Vectorial Proximo: Vectorial y no hay dependencia 
  AFFECT("50"    , "curr_op_i"     , "0b0000");
  AFFECT("50"    , "next_op_i"	  , "0b0001");
  AFFECT("50"	, "eq45_45_i"				 , "0b1");
  AFFECT("50"	, "eq45_67_i"				 , "0b0");
  AFFECT("50"	, "eq45_89_i"				 , "0b0");
  AFFECT("50"	, "eq67_45_i"				 , "0b0");
  AFFECT("50"	, "eq67_67_i"				 , "0b0");
  AFFECT("50"	, "eq67_89_i"				 , "0b0");
  AFFECT("50"	, "eq89_45_i"				 , "0b0");
  AFFECT("50"	, "eq89_67_i"				 , "0b0");
  AFFECT("50"	, "eq89_89_i"				 , "0b0");  
  
  //Actual:es Vectorial Proximo: Vectorial y hay dependencia 
  AFFECT("100"    , "curr_op_i"     , "0b0000");
  AFFECT("100"    , "next_op_i"	   , "0b0001");
  AFFECT("100"	, "eq45_45_i"				 , "0b1");
  AFFECT("100"	, "eq45_67_i"				 , "0b1");
  AFFECT("100"	, "eq45_89_i"				 , "0b1");
  AFFECT("100"	, "eq67_45_i"				 , "0b0");
  AFFECT("100"	, "eq67_67_i"				 , "0b0");
  AFFECT("100"	, "eq67_89_i"				 , "0b0");
  AFFECT("100"	, "eq89_45_i"				 , "0b0");
  AFFECT("100"	, "eq89_67_i"				 , "0b0");
  AFFECT("100"	, "eq89_89_i"				 , "0b0");    

  //Actual:es Vectorial Proximo: Constante y no hay dependencia 
  AFFECT("150"    , "curr_op_i"     , "0b0000");
  AFFECT("150"    , "next_op_i"	   , "0b1001");
  AFFECT("150"	, "eq45_45_i"				 , "0b1");
  AFFECT("150"	, "eq45_67_i"				 , "0b0");
  AFFECT("150"	, "eq45_89_i"				 , "0b1");
  AFFECT("150"	, "eq67_45_i"				 , "0b0");
  AFFECT("150"	, "eq67_67_i"				 , "0b0");
  AFFECT("150"	, "eq67_89_i"				 , "0b0");
  AFFECT("150"	, "eq89_45_i"				 , "0b0");
  AFFECT("150"	, "eq89_67_i"				 , "0b0");
  AFFECT("150"	, "eq89_89_i"				 , "0b0");  

  //Actual:es Vectorial Proximo: Constante y hay dependencia 
  AFFECT("200"    , "curr_op_i"     , "0b0000");
  AFFECT("200"    , "next_op_i"	   , "0b1001");
  AFFECT("200"	, "eq45_45_i"				 , "0b0");
  AFFECT("200"	, "eq45_67_i"				 , "0b1");
  AFFECT("200"	, "eq45_89_i"				 , "0b1");
  AFFECT("200"	, "eq67_45_i"				 , "0b0");
  AFFECT("200"	, "eq67_67_i"				 , "0b0");
  AFFECT("200"	, "eq67_89_i"				 , "0b0");
  AFFECT("200"	, "eq89_45_i"				 , "0b0");
  AFFECT("200"	, "eq89_67_i"				 , "0b0");
  AFFECT("200"	, "eq89_89_i"				 , "0b0");    
  //Actual:es Vectorial Proximo: Store y hay dependencia 
  AFFECT("250"    , "curr_op_i"     , "0b0000");
  AFFECT("250"    , "next_op_i"	   , "0b1100");
  AFFECT("250"	, "eq45_45_i"				 , "0b1");
  AFFECT("250"	, "eq45_67_i"				 , "0b0");
  AFFECT("250"	, "eq45_89_i"				 , "0b1");
  AFFECT("250"	, "eq67_45_i"				 , "0b0");
  AFFECT("250"	, "eq67_67_i"				 , "0b0");
  AFFECT("250"	, "eq67_89_i"				 , "0b0");
  AFFECT("250"	, "eq89_45_i"				 , "0b0");
  AFFECT("250"	, "eq89_67_i"				 , "0b0");
  AFFECT("250"	, "eq89_89_i"				 , "0b0");    
 
  //Actual:es Vectorial Proximo: Store y no hay dependencia 
  AFFECT("300"    , "curr_op_i"     , "0b0000");
  AFFECT("300"    , "next_op_i"	   , "0b1100");
  AFFECT("300"	, "eq45_45_i"				 , "0b0");
  AFFECT("300"	, "eq45_67_i"				 , "0b0");
  AFFECT("300"	, "eq45_89_i"				 , "0b1");
  AFFECT("300"	, "eq67_45_i"				 , "0b0");
  AFFECT("300"	, "eq67_67_i"				 , "0b0");
  AFFECT("300"	, "eq67_89_i"				 , "0b0");
  AFFECT("300"	, "eq89_45_i"				 , "0b0");
  AFFECT("300"	, "eq89_67_i"				 , "0b1");
  AFFECT("300"	, "eq89_89_i"				 , "0b0");  
  //Actual: FFT Proximo: Vectorial y no hay dependencia
  AFFECT("350"    , "curr_op_i"     , "0b1111");
  AFFECT("350"    , "next_op_i"	   , "0b0001");
  AFFECT("350"	, "eq45_45_i"				 , "0b1");
  AFFECT("350"	, "eq45_67_i"				 , "0b0");
  AFFECT("350"	, "eq45_89_i"				 , "0b1");
  AFFECT("350"	, "eq67_45_i"				 , "0b0");
  AFFECT("350"	, "eq67_67_i"				 , "0b0");
  AFFECT("350"	, "eq67_89_i"				 , "0b0");
  AFFECT("350"	, "eq89_45_i"				 , "0b0");
  AFFECT("350"	, "eq89_67_i"				 , "0b0");
  AFFECT("350"	, "eq89_89_i"				 , "0b0");  
 
  //Actual: FFT Proximo: Vectorial y no hay dependencia
  AFFECT("400"    , "curr_op_i"     , "0b1111");
  AFFECT("400"    , "next_op_i"	   , "0b0001");
  AFFECT("400"	, "eq45_45_i"				 , "0b1");
  AFFECT("400"	, "eq45_67_i"				 , "0b0");
  AFFECT("400"	, "eq45_89_i"				 , "0b1");
  AFFECT("400"	, "eq67_45_i"				 , "0b0");
  AFFECT("400"	, "eq67_67_i"				 , "0b0");
  AFFECT("400"	, "eq67_89_i"				 , "0b0");
  AFFECT("400"	, "eq89_45_i"				 , "0b0");
  AFFECT("400"	, "eq89_67_i"				 , "0b1");
  AFFECT("400"	, "eq89_89_i"				 , "0b0"); 

  SAV_GENPAT();

  exit(0);
}
